Cross-Origin Resource Sharing (CORS)

Microsoft Technologies - ডট নেট কোর (Dot.Net Core)
228
228

CORS (Cross-Origin Resource Sharing) একটি নিরাপত্তা বৈশিষ্ট্য যা ওয়েব ব্রাউজারে বিভিন্ন ডোমেইন থেকে আসা রিসোর্স অ্যাক্সেসের অনুমতি বা নিষেধাজ্ঞা নির্ধারণ করে। এটি মূলত তখন ব্যবহৃত হয়, যখন একটি ওয়েব পেজ এক ডোমেইন থেকে লোড হওয়া রিসোর্স (যেমন: API কল) অন্য একটি ডোমেইন থেকে লোড করতে চায়।

উদাহরণস্বরূপ, যদি আপনি একটি ওয়েব পেজে https://www.example.com ডোমেইনে একটি ফ্রন্ট-এন্ড অ্যাপ্লিকেশন চালাচ্ছেন এবং ওই অ্যাপ্লিকেশন যদি API কল করতে চায় https://api.example2.com ডোমেইনে, তবে CORS এর মাধ্যমে API সেগুলোর অ্যাক্সেস কন্ট্রোল করা হয়।


CORS কীভাবে কাজ করে?

CORS এর মাধ্যমে একটি ওয়েব পেজ অন্য ডোমেইন থেকে রিসোর্স ব্যবহার করার অনুমতি পায় যদি সেই ডোমেইনটির সেগমেন্টে CORS কনফিগারেশন সঠিকভাবে করা থাকে। সাধারণত, ব্রাউজার একটি HTTP OPTIONS রিকোয়েস্ট পাঠায় (যাকে "preflight request" বলা হয়) আগে থেকে নির্ধারিত ডোমেইনটির CORS হেডার যাচাই করতে, এবং যদি সঠিক হেডার থাকে, তাহলে মূল রিকোয়েস্ট (যেমন GET, POST, PUT, DELETE) পাঠানো হয়।

উদাহরণস্বরূপ, যখন ব্রাউজার CORS preflight request পাঠায়, তখন রিসিভিং সার্ভার CORS হেডার দিয়ে রেসপন্স পাঠায়, যা ব্রাউজারকে জানায় যে রিকোয়েস্টটি অনুমোদিত কিনা।


CORS হেডারসমূহ

CORS এর জন্য কিছু গুরুত্বপূর্ণ HTTP হেডার রয়েছে, যেগুলি সার্ভারের রেসপন্সে থাকে। এগুলি হল:

  • Access-Control-Allow-Origin: এই হেডারটি নির্ধারণ করে যে কোন ডোমেইন থেকে রিসোর্স অ্যাক্সেস করা যাবে। উদাহরণস্বরূপ, যদি সার্ভার Access-Control-Allow-Origin: * পাঠায়, তাহলে যেকোনো ডোমেইন থেকে রিসোর্স অ্যাক্সেস করা যাবে। যদি নির্দিষ্ট ডোমেইন দেওয়া থাকে, যেমন Access-Control-Allow-Origin: https://www.example.com, তাহলে শুধুমাত্র সেই ডোমেইন থেকে রিসোর্স অ্যাক্সেস করা যাবে।
  • Access-Control-Allow-Methods: এই হেডারটি জানায় যে কোন HTTP মেথড (GET, POST, PUT, DELETE, ইত্যাদি) অনুমোদিত।
  • Access-Control-Allow-Headers: এই হেডারটি জানায় কোন HTTP হেডারগুলি ক্লায়েন্ট থেকে সার্ভারের কাছে পাঠানো যাবে।
  • Access-Control-Allow-Credentials: যদি এই হেডারটি true থাকে, তাহলে এটি ব্রাউজারকে ক্লায়েন্টের ক্রেডেনশিয়াল (যেমন: কুকি, HTTP অথেন্টিকেশন) পাঠানোর অনুমতি দেয়।
  • Access-Control-Expose-Headers: এই হেডারটি ক্লায়েন্টকে কোন অতিরিক্ত হেডার দেখতে অনুমতি দেয়।
  • Access-Control-Max-Age: এই হেডারটি preflight রিকোয়েস্টের ফলাফল কতক্ষণ ক্যাশে করা হবে তা নির্ধারণ করে।

CORS কনফিগারেশন ASP.NET Core এ

ASP.NET Core অ্যাপ্লিকেশনে CORS কনফিগার করা খুবই সহজ। Startup.cs ফাইলে CORS পলিসি নির্ধারণ এবং ব্যবহারের জন্য নিচের পদক্ষেপগুলো অনুসরণ করা যায়।

  1. CORS পলিসি কনফিগার করা:

    ConfigureServices মেথডে CORS পলিসি কনফিগার করুন। এখানে আপনি নির্ধারণ করবেন যে কোন ডোমেইন থেকে অ্যাক্সেস অনুমোদিত হবে।

    public void ConfigureServices(IServiceCollection services)
    {
        // CORS পলিসি কনফিগার করা
        services.AddCors(options =>
        {
            options.AddPolicy("AllowSpecificOrigin",
                builder => builder.WithOrigins("https://www.example.com")
                                  .AllowAnyHeader()
                                  .AllowAnyMethod());
        });
        
        services.AddControllers();
    }
    
  2. CORS পলিসি ব্যবহৃত করা:

    Configure মেথডে CORS পলিসি ব্যবহার করুন। সাধারণত, CORS সেটিংস অ্যাপ্লিকেশন মাউন্ট হওয়ার আগে ব্যবহার করা হয়, যেমন UseCors()

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseHsts();
        }
    
        app.UseCors("AllowSpecificOrigin"); // CORS পলিসি অ্যাপ্লাই করা
    
        app.UseRouting();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });
    }
    

এখন, অ্যাপ্লিকেশনটি https://www.example.com ডোমেইন থেকে আসা রিকোয়েস্টগুলো অনুমোদন করবে।


CORS পলিসির উদাহরণ

  • Allow All Origins: সব ধরনের ডোমেইন থেকে রিকোয়েস্ট গ্রহণ করার জন্য CORS কনফিগার করা।

    services.AddCors(options =>
    {
        options.AddPolicy("AllowAllOrigins", builder => builder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod());
    });
    
  • Allow Multiple Origins: নির্দিষ্ট একাধিক ডোমেইন থেকে রিকোয়েস্ট গ্রহণ করা।

    services.AddCors(options =>
    {
        options.AddPolicy("AllowMultipleOrigins", builder =>
            builder.WithOrigins("https://www.example1.com", "https://www.example2.com")
                   .AllowAnyHeader()
                   .AllowAnyMethod());
    });
    

CORS এবং Security

CORS মূলত ব্রাউজার সাইড নিরাপত্তা ব্যবস্থা, যা ডেভেলপারদের শর্তানুযায়ী রিসোর্স শেয়ারিং নিয়ন্ত্রণ করতে সাহায্য করে। এটি নিরাপত্তা দৃষ্টিকোণ থেকে গুরুত্বপূর্ণ, কারণ এটি সংবেদনশীল ডেটার অ্যাক্সেস শুধুমাত্র নির্দিষ্ট ডোমেইনগুলো থেকে সীমাবদ্ধ করে।

  • Cross-Site Request Forgery (CSRF) প্রতিরোধ: CORS ব্যবহারের মাধ্যমে আপনি এক ডোমেইন থেকে অন্য ডোমেইনকে নিরাপদভাবে রিকোয়েস্ট পাঠাতে পারবেন।
  • API সিকিউরিটি: CORS পলিসির মাধ্যমে আপনি কন্ট্রোল করতে পারেন কোন API এন্ডপয়েন্টে অ্যাক্সেস করা যাবে এবং কোন ডোমেইন বা হেডারগুলো অনুমোদিত হবে।

সারাংশ

CORS (Cross-Origin Resource Sharing) একটি গুরুত্বপূর্ণ নিরাপত্তা ব্যবস্থা যা ওয়েব অ্যাপ্লিকেশনগুলোকে বিভিন্ন ডোমেইন থেকে রিসোর্স অ্যাক্সেসের অনুমতি বা নিষেধাজ্ঞা দেয়। ASP.NET Core-এ CORS কনফিগারেশন খুবই সহজ এবং সেটি API সিকিউরিটি এবং বিভিন্ন ক্লায়েন্ট থেকে রিসোর্স শেয়ারিং নিয়ন্ত্রণ করতে ব্যবহৃত হয়। এর মাধ্যমে ডেভেলপাররা নির্দিষ্ট ডোমেইন বা হেডার থেকে API রিকোয়েস্ট গ্রহণ বা প্রত্যাখ্যান করতে পারেন। CORS পলিসি কনফিগারেশন এবং নিরাপত্তা নিশ্চিতকরণের মাধ্যমে, ওয়েব অ্যাপ্লিকেশন আরো নিরাপদ এবং কার্যকরী হয়ে ওঠে।

common.content_added_by

CORS কী এবং কেন প্রয়োজন?

190
190

CORS (Cross-Origin Resource Sharing) হল একটি নিরাপত্তা প্রোটোকল যা ওয়েব ব্রাউজারগুলোকে নির্দিষ্ট নিয়মের মাধ্যমে একে অপরের ডোমেইন থেকে রিসোর্স শেয়ার করতে অনুমতি দেয়। এটি মূলত ওয়েব অ্যাপ্লিকেশন এবং API এর মধ্যে ক্রস-অরিজিন অনুরোধ (cross-origin requests) পরিচালনা করতে ব্যবহৃত হয়। একটি "অরিজিন" বলতে বোঝানো হয় একটি নির্দিষ্ট স্কিমা (যেমন HTTP/HTTPS), ডোমেইন, এবং পোর্টের সমন্বয়। যখন একটি ওয়েব অ্যাপ্লিকেশন বা ব্রাউজার অন্য একটি অরিজিন থেকে ডেটা বা রিসোর্স অ্যাক্সেস করতে চায়, তখন CORS নিশ্চিত করে যে শুধুমাত্র অনুমোদিত ডোমেইন বা অ্যাপ্লিকেশনগুলোই এই অনুরোধগুলো গ্রহণ করতে পারে।

যেমন, যদি আপনার একটি ওয়েব অ্যাপ্লিকেশন http://example.com থেকে অন্য একটি অ্যাপ্লিকেশন http://api.example.com এ GET, POST, PUT বা DELETE অনুরোধ পাঠাতে চায়, তবে CORS প্রোটোকল ব্যবহার করে আপনি নিশ্চিত করতে পারেন যে api.example.com ওই অনুরোধগুলো গ্রহণ করতে পারবে এবং তা নিরাপদভাবে প্রসেস করতে পারবে।


CORS এর প্রয়োজনীয়তা


  1. নিরাপত্তা রক্ষার জন্য
    ওয়েব ব্রাউজারের মধ্যে ক্রস-অরিজিন অনুরোধ ব্যবহারের জন্য CORS একটি নিরাপত্তা ব্যবস্থা হিসাবে কাজ করে। ওয়েব ব্রাউজারে একটি সাধারণ নিরাপত্তা নিয়ম রয়েছে, যেখানে একটি ওয়েব অ্যাপ্লিকেশন এক অরিজিন থেকে অন্য অরিজিনের রিসোর্সে অ্যাক্সেস করতে পারে না, এটি Same-Origin Policy (SOP) নামে পরিচিত। CORS এই নীতির মধ্যে একটি নিরাপদ উপায় প্রদান করে যেখানে ওয়েব অ্যাপ্লিকেশন যদি অন্য অরিজিনের রিসোর্স অ্যাক্সেস করতে চায়, তবে সেটি CORS হেডারগুলো যাচাই করে।
  2. ক্রস-অরিজিন অনুরোধে অনুমতি দেওয়া
    আধুনিক ওয়েব অ্যাপ্লিকেশনগুলো সাধারণত একাধিক সেবা বা API ব্যবহার করে। উদাহরণস্বরূপ, একটি ফ্রন্ট-এন্ড অ্যাপ্লিকেশন http://example.com যদি API সার্ভিস http://api.example.com থেকে ডেটা গ্রহণ করতে চায়, তাহলে CORS প্রোটোকল ব্যবহার করে API সার্ভিস নিশ্চিত করতে পারে যে ঐ অনুরোধটি বৈধ এবং নিরাপদ।
  3. API এর নিরাপত্তা নিশ্চিত করা
    যখন আপনি একটি API তৈরি করেন, আপনি চাইবেন না যে আপনার API যেকোনো সাইট বা ডোমেইন থেকে অনুরোধ গ্রহণ করুক। CORS হেডারের মাধ্যমে আপনি নির্দিষ্ট করতে পারেন কোন ডোমেইন বা অরিজিনগুলো আপনার API এর সাথে ইন্টারঅ্যাক্ট করতে পারবে এবং কোনগুলো পারবে না। এতে API এর নিরাপত্তা অনেক বেশি শক্তিশালী হয়।
  4. Cross-Domain রিকোয়েস্টের ক্ষেত্রে সুবিধা
    ওয়েব অ্যাপ্লিকেশনগুলো প্রায়ই বিভিন্ন ডোমেইন থেকে রিসোর্স গ্রহণ করে। উদাহরণস্বরূপ, একটি ওয়েবসাইটের ফ্রন্ট-এন্ড এবং ব্যাক-এন্ড আলাদা সার্ভারে থাকতে পারে, বা আপনার অ্যাপ্লিকেশনটি একটি থার্ড-পার্টি API ব্যবহার করতে পারে। CORS এমন ক্ষেত্রগুলিতে প্রয়োজনীয় অনুমতি দেয় যাতে এই ক্রস-অরিজিন রিকোয়েস্টগুলো সঠিকভাবে সম্পাদিত হয় এবং ডেটা বিনিময় সম্ভব হয়।

CORS কিভাবে কাজ করে?


CORS প্রধানত HTTP হেডার এর মাধ্যমে কাজ করে। যখন একটি ওয়েব অ্যাপ্লিকেশন বা ব্রাউজার একটি ক্রস-অরিজিন অনুরোধ পাঠায়, তখন সার্ভার তার রেসপন্সে কিছু নির্দিষ্ট CORS হেডার পাঠায়, যা ব্রাউজারকে নির্দেশ দেয় যে এই অনুরোধটি অনুমোদিত কিনা।

এখানে কিছু গুরুত্বপূর্ণ CORS হেডারের উদাহরণ:

  • Access-Control-Allow-Origin: এই হেডারটি বলছে কোন অরিজিন (ডোমেইন) থেকে অনুরোধ গ্রহণ করা যাবে। উদাহরণস্বরূপ, Access-Control-Allow-Origin: * মানে যে সব অরিজিনের অনুরোধ গ্রহণ করা যাবে, আর Access-Control-Allow-Origin: http://example.com মানে শুধুমাত্র http://example.com ডোমেইনের অনুরোধই গ্রহণ করা হবে।
  • Access-Control-Allow-Methods: এই হেডারটি নির্দিষ্ট করে দেয় যে কোন HTTP মেথডগুলোর জন্য ক্রস-অরিজিন অনুরোধ গ্রহণ করা যাবে। উদাহরণস্বরূপ, Access-Control-Allow-Methods: GET, POST, PUT
  • Access-Control-Allow-Headers: এই হেডারটি বলে যে কোন ধরনের কাস্টম হেডার সার্ভার গ্রহণ করতে পারে। উদাহরণস্বরূপ, Access-Control-Allow-Headers: Content-Type, Authorization
  • Access-Control-Allow-Credentials: যদি ওয়েব অ্যাপ্লিকেশনটি ক্রেডেনশিয়ালস (যেমন কুকি, HTTP অথেনটিকেশন টোকেন ইত্যাদি) পাঠাতে চায়, তবে এই হেডারটি প্রয়োজনীয় অনুমতি প্রদান করে।

CORS কনফিগারেশন


CORS কনফিগারেশন করার জন্য ASP.NET Core এ Startup.cs ফাইলের ConfigureServices মেথডে AddCors পদ্ধতি ব্যবহার করা হয়। এখানে একটি সাধারণ উদাহরণ দেয়া হলো:

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors(options =>
    {
        options.AddPolicy("AllowSpecificOrigin",
            builder => builder.WithOrigins("http://example.com")
                              .AllowAnyMethod()
                              .AllowAnyHeader());
    });
}

এখানে AllowSpecificOrigin পলিসি কনফিগার করা হয়েছে, যা শুধুমাত্র http://example.com ডোমেইন থেকে অনুরোধ গ্রহণ করবে।

এটি এরপর Configure মেথডে ব্যবহার করা হয়:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseCors("AllowSpecificOrigin");

    // অন্যান্য Middleware গুলো
}

এভাবে CORS কনফিগার করা হলে, নির্দিষ্ট ডোমেইন বা অরিজিন থেকে API এর ক্রস-অরিজিন অনুরোধগুলো অনুমোদিত হবে।


সারাংশ


CORS একটি নিরাপত্তা প্রোটোকল যা ওয়েব ব্রাউজারগুলোকে একটি ডোমেইন থেকে অন্য ডোমেইনের রিসোর্স অ্যাক্সেস করার অনুমতি দেয়। এটি মূলত ওয়েব অ্যাপ্লিকেশন এবং API এর মধ্যে ক্রস-অরিজিন অনুরোধ অনুমোদন করতে ব্যবহৃত হয়। CORS সার্ভারের মাধ্যমে HTTP হেডারের মাধ্যমে ক্রস-অরিজিন অনুরোধগুলো অনুমোদন বা বাতিল করা হয়, এবং এটি API বা সার্ভারের নিরাপত্তা রক্ষা করতে অত্যন্ত গুরুত্বপূর্ণ।

common.content_added_by

CORS কনফিগার করা

187
187

CORS (Cross-Origin Resource Sharing) একটি নিরাপত্তা ফিচার যা ওয়েব ব্রাউজারকে নিয়ন্ত্রণ করে, যাতে এক ডোমেইনের ওয়েব পেজ অন্য ডোমেইনের রিসোর্স অ্যাক্সেস করতে না পারে, যদি না তা নির্দিষ্টভাবে অনুমোদিত হয়। উদাহরণস্বরূপ, আপনি যদি একটি API তৈরি করেন এবং আপনার API থেকে অন্য ডোমেইন বা ওয়েব অ্যাপ্লিকেশন রিসোর্স অ্যাক্সেস করতে চায়, তবে CORS সেটিংস কনফিগার করা আবশ্যক।

ASP.NET Core অ্যাপ্লিকেশনে CORS কনফিগার করার মাধ্যমে আপনি নির্দিষ্ট ডোমেইন থেকে API রিকোয়েস্ট গ্রহণের অনুমতি দিতে পারেন। এটি নিরাপত্তা এবং সঠিক ডেটা প্রবাহ নিশ্চিত করতে সাহায্য করে।


CORS কনফিগারেশন প্রক্রিয়া


১. CORS সেবা অ্যাড করা

প্রথমে, আপনাকে Startup.cs ফাইলে CORS সেবা অ্যাড করতে হবে। ConfigureServices মেথডে AddCors() মেথড ব্যবহার করতে হবে।

public void ConfigureServices(IServiceCollection services)
{
    // CORS পলিসি কনফিগার করা
    services.AddCors(options =>
    {
        options.AddPolicy("AllowSpecificOrigin", builder =>
        {
            builder.WithOrigins("https://example.com")  // অনুমোদিত ডোমেইন
                   .AllowAnyMethod()                   // অনুমোদিত HTTP মেথড
                   .AllowAnyHeader();                  // অনুমোদিত হেডার
        });
    });

    services.AddControllers();
}

এখানে AddPolicy মেথডের মাধ্যমে আমরা একটি কাস্টম CORS পলিসি তৈরি করেছি, যেখানে শুধুমাত্র https://example.com ডোমেইন থেকে রিকোয়েস্ট অনুমোদিত। আপনি এটি পরিবর্তন করে অন্যান্য ডোমেইনও যুক্ত করতে পারেন।


২. CORS পলিসি অ্যাপ্লিকেশনটিতে অ্যাপ্লাই করা

এখন, আপনাকে Configure মেথডে UseCors মেথড ব্যবহার করে CORS পলিসি অ্যাপ্লাই করতে হবে।

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
        app.UseHsts();
    }

    app.UseHttpsRedirection();
    app.UseStaticFiles();

    app.UseRouting();

    app.UseCors("AllowSpecificOrigin");  // এখানে পলিসি অ্যাপ্লাই করা

    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}

এখানে, UseCors মেথডটি Configure মেথডে কল করা হয়েছে যাতে কনফিগার করা CORS পলিসি অ্যাপ্লিকেশনটিতে ব্যবহৃত হয়।


৩. CORS কনফিগারেশন বিকল্প

CORS পলিসি আরো কাস্টমাইজ করা যেতে পারে বিভিন্ন পদ্ধতিতে, যেমন:

  • Multiple Origins: একাধিক ডোমেইন থেকে রিকোয়েস্ট অনুমোদন করতে:
builder.WithOrigins("https://example.com", "https://anotherdomain.com")
  • Allow Credentials: ক্রেডেনশিয়াল (যেমন, কুকি) অনুমোদন করতে:
builder.AllowCredentials();
  • Allow Specific Headers: নির্দিষ্ট হেডার অনুমোদন করতে:
builder.WithHeaders("Content-Type", "Authorization");

সারাংশ

CORS কনফিগার করে আপনি নিয়ন্ত্রণ করতে পারেন কোন ডোমেইন আপনার API এর রিসোর্স অ্যাক্সেস করতে পারবে। ASP.NET Core তে CORS পলিসি কনফিগার করে আপনি নিরাপদভাবে এবং নির্দিষ্ট শর্তে API ব্যবহারকারীদের অনুমতি দিতে পারেন। CORS সেটআপের মাধ্যমে আপনার অ্যাপ্লিকেশনকে আরও নিরাপদ এবং কার্যকরী করা সম্ভব।

common.content_added_by

API Security এবং Cross-Domain Requests

217
217

API নিরাপত্তা এবং ক্রস-ডোমেন রিকোয়েস্ট (Cross-Domain Requests) দুটি অত্যন্ত গুরুত্বপূর্ণ বিষয় যখন আমরা ওয়েব অ্যাপ্লিকেশন বা মোবাইল অ্যাপ্লিকেশন তৈরি করি। API নিরাপত্তা নিশ্চিত করে যে আপনার API কেবলমাত্র অনুমোদিত ব্যবহারকারীর জন্য অ্যাক্সেসযোগ্য, এবং ক্রস-ডোমেন রিকোয়েস্ট সঠিকভাবে কনফিগার করা থাকে যাতে এক ডোমেন থেকে অন্য ডোমেনে রিকোয়েস্ট নিরাপদে পাঠানো যায়। আসুন, এসবের উপর বিস্তারিত আলোচনা করি।


API Security কী?

API সিকিউরিটি এমন একটি প্রক্রিয়া যা নিশ্চিত করে যে আপনার API-এর মাধ্যমে যে ডেটা আদান-প্রদান হচ্ছে তা সুরক্ষিত থাকে। API নিরাপত্তা ব্যবহারকারীর তথ্য, ডেটাবেস, এবং অন্যান্য সংবেদনশীল সম্পদকে রক্ষা করতে সাহায্য করে। API সিকিউরিটি বিভিন্ন পদ্ধতির মাধ্যমে নিশ্চিত করা হয়, যেমন:

Authentication (প্রমাণীকরণ)

প্রমাণীকরণ হল প্রক্রিয়া যার মাধ্যমে আপনি নিশ্চিত করেন যে কোন ব্যবহারকারী বা সিস্টেম API অ্যাক্সেস করার জন্য বৈধ। সাধারণত, API authentication এর জন্য OAuth, JWT (JSON Web Tokens), এবং API Keys ব্যবহৃত হয়।

  • API Key: একটি বিশেষ কী যেটি API অ্যাক্সেসের জন্য ব্যবহারকারীর কাছে সরবরাহ করা হয়। যদিও সহজ, তবে এটি সুরক্ষিত না হতে পারে যদি যথাযথভাবে হ্যান্ডেল না করা হয়।
  • OAuth: এটি একটি আধিকারিক প্রমাণীকরণ প্রোটোকল যা তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলিকে নির্দিষ্ট তথ্য অ্যাক্সেস করতে অনুমতি দেয়, কিন্তু ব্যবহারকারীর পাসওয়ার্ড প্রদান করতে হয় না।
  • JWT (JSON Web Tokens): JWT একটি ওপেন স্ট্যান্ডার্ড যা নিরাপদ ডেটা এক্সচেঞ্জ করার জন্য ব্যবহৃত হয়। এটি প্রমাণীকরণের জন্য খুবই জনপ্রিয় একটি টুল, যেখানে টোকেন ব্যবহার করে ব্যবহারকারী বা ক্লায়েন্টের বৈধতা যাচাই করা হয়।

Authorization (অনুমোদন)

প্রমাণীকরণের পর, আপনাকে নিশ্চিত করতে হবে যে ব্যবহারকারী যেটি করতে চাচ্ছে, তা করার জন্য তার অনুমতি আছে কিনা। সাধারণভাবে Role-based Access Control (RBAC) অথবা Claim-based Access Control ব্যবহৃত হয়। Authorization নিশ্চিত করে যে শুধুমাত্র অনুমোদিত ব্যবহারকারীই API-তে নির্দিষ্ট কার্যক্রম সম্পাদন করতে পারে।

HTTPS (SSL/TLS) ব্যবহার

HTTPS বা SSL/TLS প্রোটোকল API-র জন্য খুবই গুরুত্বপূর্ণ, কারণ এটি ট্রান্সমিশনের সময় ডেটা এনক্রিপ্ট করে। এটি man-in-the-middle attacks প্রতিরোধে সাহায্য করে এবং ক্লায়েন্ট ও সার্ভারের মধ্যে যোগাযোগের নিরাপত্তা নিশ্চিত করে।

Rate Limiting (রেট লিমিটিং)

API-তে অত্যধিক ট্র্যাফিক বা অনুরোধ থেকে সুরক্ষা পেতে rate limiting ব্যবহার করা হয়। এটি নিশ্চিত করে যে কোনো একক ব্যবহারকারী বা সিস্টেম খুব দ্রুত এবং বারবার রিকোয়েস্ট পাঠাচ্ছে না। এটি DDoS (Distributed Denial of Service) আক্রমণ প্রতিরোধে সাহায্য করে।


Cross-Domain Requests কী?

ক্রস-ডোমেন রিকোয়েস্ট হল এমন রিকোয়েস্ট যা একটি ওয়েব পেজ থেকে অন্য ডোমেনের একটি API সার্ভিসে পাঠানো হয়। সাধারণত, ব্রাউজারগুলো ক্রস-ডোমেন রিকোয়েস্টের জন্য Same-Origin Policy অনুসরণ করে, যার মানে হচ্ছে, একটি ওয়েব পেজ অন্য ডোমেনের রিসোর্স অ্যাক্সেস করতে পারবে না যদি না সেটি বিশেষভাবে অনুমোদিত হয়।

যেমন:

  • আপনার ওয়েব অ্যাপ্লিকেশন "domainA.com" থেকে API কল করতে চাচ্ছে "domainB.com" এ।
  • যদি API কলটি "domainB.com" থেকে আসা না হয়, তবে ব্রাউজার CORS (Cross-Origin Resource Sharing) নীতি প্রয়োগ করবে এবং রিকোয়েস্ট ব্লক করে দিবে।

Cross-Origin Resource Sharing (CORS)

CORS হল একটি নিরাপত্তা ফিচার যা ওয়েব অ্যাপ্লিকেশনকে নিরাপদভাবে এক ডোমেন থেকে অন্য ডোমেনে রিকোয়েস্ট করতে দেয়। CORS কনফিগারেশন সার্ভারের মাধ্যমে সম্পন্ন করা হয়, যেখানে API সার্ভার জানিয়ে দেয় কোন ডোমেনগুলো তার রিসোর্স অ্যাক্সেস করতে পারবে এবং কোন HTTP মেথডগুলো অনুমোদিত হবে।

CORS কনফিগারেশন

ASP.NET Core অ্যাপ্লিকেশনেই CORS কনফিগার করা যায়, এবং এটি সাধারণত Startup.cs ফাইলে করা হয়।

  1. CORS কনফিগারেশন ইনস্টল করা: CORS কনফিগার করতে প্রথমে Microsoft.AspNetCore.Cors প্যাকেজটি ইনস্টল করতে হবে।

    NuGet প্যাকেজ:

    dotnet add package Microsoft.AspNetCore.Cors
    
  2. CORS কনফিগারেশন করা: Startup.cs ফাইলে নিচের মতো কনফিগারেশন করতে হবে।

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddCors(options =>
        {
            options.AddPolicy("AllowSpecificOrigin", builder =>
                builder.WithOrigins("http://example.com")
                       .AllowAnyHeader()
                       .AllowAnyMethod());
        });
    
        services.AddControllers();
    }
    
    public void Configure(IApplicationBuilder app)
    {
        app.UseCors("AllowSpecificOrigin");  // CORS পলিসি ব্যবহার করা
    
        app.UseRouting();
    
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });
    }
    

এখানে AllowSpecificOrigin পলিসি দিয়ে শুধুমাত্র http://example.com ডোমেনকে API অ্যাক্সেস করার অনুমতি দেওয়া হয়েছে। আপনি AllowAnyOrigin() ব্যবহার করে সব ডোমেনের জন্য অ্যাক্সেস খুলে দিতে পারেন, তবে এটি নিরাপত্তার জন্য ঝুঁকি তৈরি করতে পারে।


API Security Best Practices

  1. Secure API Endpoints:
    • প্রত্যেকটি সুরক্ষিত API এন্ডপয়েন্টের জন্য Authentication এবং Authorization ব্যবহার করুন।
    • Role-based Access Control (RBAC) সেটআপ করুন, যাতে শুধুমাত্র নির্দিষ্ট ব্যবহারকারীরা নির্দিষ্ট রিসোর্স অ্যাক্সেস করতে পারে।
  2. Secure Data Transmission:
    • সব সময় HTTPS ব্যবহার করুন। এটি নিশ্চিত করে যে ডেটা এনক্রিপ্ট করা অবস্থায় এক্সচেঞ্জ হবে।
    • JWT বা OAuth ব্যবহার করে API-তে টোকেন ভিত্তিক প্রমাণীকরণ প্রয়োগ করুন।
  3. Rate Limiting and Throttling:
    • API রিকোয়েস্টগুলোর জন্য Rate Limiting ব্যবহার করুন, যাতে অত্যধিক রিকোয়েস্ট ব্লক করা যায়।
    • Throttling এবং IP Whitelisting ব্যবহার করে অবৈধ অ্যাক্সেস আটকান।
  4. API Key Management:
    • API কী সুরক্ষিত রাখতে Environment Variables ব্যবহার করুন।
    • Key Expiration এবং Rotation ব্যবহার করে নিয়মিত API কী পরিবর্তন করুন।

সারাংশ


API সিকিউরিটি অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি API ব্যবহারের সুরক্ষা নিশ্চিত করে এবং অ্যাক্সেস কন্ট্রোল প্রদান করে। Authentication, Authorization, এবং HTTPS এর মাধ্যমে API সুরক্ষা নিশ্চিত করা যায়। অন্যদিকে, CORS হল এক ডোমেন থেকে আরেক ডোমেনে রিকোয়েস্ট পাঠানোর নিরাপদ উপায়। ASP.NET Core-এ সহজেই CORS কনফিগার করে API নিরাপদভাবে ব্যবহারকারী বা সিস্টেমের জন্য অ্যাক্সেসযোগ্য করে তোলা যায়। API সিকিউরিটির বেস্ট প্র্যাকটিস অনুসরণ করে API এবং ব্যবহারকারী তথ্যের সুরক্ষা নিশ্চিত করা যেতে পারে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion